package com.tool.cn.util;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;


/**
 * 集合工具类
 * 
 * @author wangzh
 * 2016年9月18日 上午9:17:16
 */
public final class CollectionUtil {

	/**
	 * 判断数组是否为空
	 */
	public static boolean isNotEmptyArray(Object[] array){
		return !isEmptyArray(array);
	}
	
	/**
	 * 判断数组是否非空
	 */
	public static boolean isEmptyArray(Object[] array){
		if(array!=null&&array.length>0){
			return false;
		}
		return true;
	}
	
	/**
	 * 判断collection是否为空
	 */
	public static boolean isEmptyCollection(Collection<?> collection){
		if(collection!=null&&collection.size()>0){
			return false;
		}
		return true;
	}
	
	/**
	 * 判断collection是否非空
	 */
	public static boolean isNotEmptyCollection(Collection<?> collection){
		return !isEmptyCollection(collection);
	}
	
	/**
	 * 判断Map是否为空
	 */
	public static boolean isEmptyMap(Map<?,?> map){
		if(map!=null&&map.size()>0){
			return false;
		}
		return true;
	}
	
	/**
	 * 判断Map是否非空
	 */
	public static boolean isNotEmptyMap(Map<?,?> map){
		return !isEmptyMap(map);
	}
	
	/**
	 * String数组转int
	 */
	public static Integer[] StringToInt(String[] arrs) {
		Integer[] ints = new Integer[arrs.length];
		for (int i = 0; i < arrs.length; i++) {
			ints[i] = Integer.parseInt(arrs[i]);
		}
		return ints;
	}
	
	/**
	 * 判断list集合是否有重复数据，不含重复true  含重复 false 
	 * @param list
	 * @return
	 */
	public static <T> boolean listNotRepeat(List<T> list) {
		Set<T> set = new HashSet<T>(list);
        List<T> tempList = new ArrayList<T>(set);
        return list.size()==tempList.size();
	}
	
	/**
	 * list数据去重，保留顺序
	 */
	public static<T> List<T> repeatData(List<T> list){
		LinkedHashSet<T> hashSet =new LinkedHashSet<T>(list);
		 
		List<T> listWithoutDuplicates =new ArrayList<T>(hashSet);
		return listWithoutDuplicates;
	}
}
